export interface BatchTableRowModel {
  batchCode: string
  batchName: string
  createTime: string
  creator: string
  id: number
  identifyStatus: string
  pointStatus: string
  updateTime: string
  detail: boolean
  edit: boolean
  delete: boolean
  identifyApply: boolean
  identifyRegister: boolean
  noNeed: boolean
  finished: boolean
  click: boolean
  clickConfirm: boolean
  temporary: boolean
  supplement: boolean
  identifyStatusCode: string
}
export interface CommonSelectOptionModel {
  id: number
  name: string
  value: string
}

export interface BatchInfoModel {
  batchCode: string
  batchId: number
  batchName: string
  clueIds: number[]
  depositTerm: string
  description: string
  endDate: string
  identifyType: string
  identifyTypeCode: string
  startDate: string
}

export interface AddBatchModel {
  batchName: string
  clueIds: number[]
  depositTerm?: string
  description?: string
  endDate?: string
  itemIds: number[]
  startDate?: string
}
export interface ClueSelectOptionModel {
  clueName: string
  clueNumber: string
  createdBy: string
  createdTime: string
  delFlag: number
  id: number
  provideId: number
  receiveTime: string
  receiveUserId: number
  statusCode: string
  transferUserId: number
  updatedBy: string
  updatedTime: string
}
export interface CollectingDJTableRowModel {
  remark: string
  subItemId: number
  clueName: string
  collectType: string
  djStatus: string
  itemCode: string
  itemId: number
  itemName: string
  itemNum: number
  itemType: string
  subItemCode: string
  subItems: CollectingDJTableRowSubItemModel[]
  transferUser: string
  uid: number
  imageIds: string
  _imageFiles: any[] // 运行时存储
}

export interface CollectingDJTableRowSubItemModel {
  collectType: string
  itemCode: string
  itemId: number
  itemName: string
  itemNum: number
  itemType: string
  subItemCode: string
  transferUser: string
}

export interface ApplyBatchInfoModel {
  batchCode: string
  batchName: string
  createTime: string
  creator: string
  creatorId: number
  delFlag: number
  depositTerm: string
  description: string
  endDate: string
  id: number
  identifyStatus: string
  identifyStatusCode: string
  pointStatus: string
  pointStatusCode: string
  startDate: string
  updateTime: string
}

export interface ApplyCollectingTableRowModel {
  collectType: string
  itemCode: string
  itemId: number
  itemName: string
  itemNum: number
  itemType: string
  transferUser: string
  id: number
  subItemId: number
  subItemCode: string
  subItems: ApplyCollectingTableRowModel[]
}

export interface CollectingTableRowModel {
  clueId: number
  collectTypeCode: string
  collectTypeName: string
  createdBy: string
  createdTime: string
  delFlag: number
  fileIds: string
  id: number
  itemCode: string
  itemName: string
  itemNum: number
  itemTypeCode: string
  itemTypeName: string
  jsonStr: string
  notes: string
  receiveTime: string
  receiveUser: string
  updatedBy: string
  updatedTime: string
  transferUser: string
}

export interface ClueModel {
  clueName: string
  clueNumber: string
  createdBy: string
  createdTime: string
  delFlag: number
  id: number
  provideId: number
  receiveTime: string
  receiveUserId: number
  statusCode: string
  transferUserId: number
  updatedBy: string
  updatedTime: string
}

export interface ClueBaseModel {
  clueName: string
  clueNumber: string
  commitTime: string
  dept: string
  id: number
  idNo: string
  idTypeName: string
  phone: string
  receiveTime: string
  receiveUser: string
  userName: string
  transferUser: string
}

export interface IEOptionModel {
  bank: string
  bankNumber: string
  concatPhone: string
  createdBy: string
  createdTime: string
  delFlag: number
  designation: string
  fileIds: string
  id: number
  idNumber: string
  jobUnit: string
  major: string
  notes: string
  sex: string
  title: string
  titleName: string
  updatedBy: string
  updatedTime: string
  userName: string
}
export interface IdentifyApplyModel {
  batchId: number
  batchNumList: {
    itemId: number
    itemNum: number
  }[]
  fileIds?: string
  identifyAddress: string
  identifyDescription?: string
  identifyExpertIds: string
  identifyName: string
  identifyTime: string
  identifyType: string
  identifyTypeCode: string
}

export interface IdentifyInfoModel {
  batchId: number
  createTime: string
  delFlag: number
  fileIds: string
  files: string[]
  id: number
  identifyAddress: string
  identifyCode: string
  identifyDescription: string
  identifyExpertIds: string
  identifyName: string
  identifyTime: string
  identifyType: string
  identifyTypeCode: string
  status: 0 | 1
  updateTime: string
  identifyExperts: string[]
  _files: any[]
}

export interface IdentifyFormModel {
  audioFileIds?: string
  contractFileIds?: string
  expertFileIds?: string
  identifyId: number
  meetingMinutesFileIds?: string
  meetingResultFileIds?: string
  otherFileIds?: string
  planFileIds?: string
  priceFileIds?: string
  remark?: string
  summaryResultFileIds?: string
  supplementFileIds?: string
  talkFileIds?: string
  totalOpinion: string
  videoFileIds?: string
}

export interface IdentifySubItemModel {
  authenticity: string
  id: number
  itemId: number
  itemName: string
  itemType: string
  opinion: string
  _opinion: string | null // 用于运行时存储
  _authenticity: string | null // 用于运行时存储
  receiveTime: string
  subItemCode: string
  transferUser: string
}

export interface DjBatchDetailModel {
  batchCode: string
  batchName: string
  createTime: string
  creator: string
  creatorId: number
  delFlag: number
  depositTerm: string
  description: string
  endDate: string
  id: number
  identifyStatus: string
  identifyStatusCode: string
  pointStatus: string
  pointStatusCode: string
  startDate: string
  updateTime: string
}

export interface DjStat {
  clicked: number
  notClicked: number
  temporary: number
  total: number
}

const api: ApiConfig = {
  list: {
    method: 'GET',
    url: '/collection/manage/batchList'
  },
  identifyProcess: {
    method: 'GET',
    url: '/collection/manage/identifyProcess'
  },
  add: {
    method: 'POST',
    url: '/collection/manage/addBatch'
  },
  update: {
    method: 'POST',
    url: '/collection/manage/updateBatch'
  },
  delete: {
    method: 'POST',
    url: '/collection/manage/delete'
  },
  identifyLast: {
    method: 'GET',
    url: '/collection/manage/identifyLast'
  },
  identifyList: {
    method: 'GET',
    url: '/collection/manage/identifyList'
  },
  formInfo: {
    method: 'GET',
    url: '/collection/manage/detail'
  },
  expertList: {
    method: 'GET',
    url: '/collection/manage/expertList'
  },
  identifyRegisterDetail: {
    method: 'GET',
    url: '/collection/manage/identifyRegisterDetail'
  },
  djBatchDetail: {
    method: 'GET',
    url: '/collection/manage/djBatchDetail'
  },
  applyFormInfo: {
    method: 'GET',
    url: '/collection/manage/batchDetail'
  },
  identifyApply: {
    method: 'POST',
    url: '/collection/manage/identifyApply'
  },
  supplementFiles: {
    method: 'POST',
    url: '/collection/manage/supplementFiles'
  },
  identifyItems: {
    method: 'GET',
    url: '/collection/manage/identifyItems'
  },
  identifyDetail: {
    method: 'GET',
    url: '/collection/manage/identifyDetail'
  },
  identifyDetailByIdentifyId: {
    method: 'GET',
    url: '/collection/identify/identifyDetailByIdentifyId'
  },
  identifySubItems: {
    method: 'GET',
    url: '/collection/manage/identifySubItems'
  },
  djStatusList: {
    method: 'GET',
    url: '/collection/manage/djStatusDropBox'
  },
  summaryBatch: {
    method: 'POST',
    url: '/collection/manage/summaryBatch'
  },
  identifyBatch: {
    method: 'POST',
    url: '/collection/manage/identifyBatch'
  },
  identifyStatusList: {
    method: 'GET',
    url: '/collection/manage/identifyStatusDropBox'
  },
  clueList: {
    method: 'GET',
    url: '/collection/manage/clueDropBox'
  },
  clueInfo: {
    method: 'GET',
    url: '/collection/clue/info/:id'
  },
  clueBaseInfo: {
    method: 'GET',
    url: '/collection/clue/baseInfo/:id'
  },
  collectingList: {
    method: 'POST',
    url: '/collection/manage/collectionItems'
  },
  collectingEditList: {
    method: 'POST',
    url: '/collection/manage/batchCollectionItems'
  },
  clickConfirm: {
    method: 'POST',
    url: '/collection/manage/clickConfirm'
  },
  temporaryStorage: {
    method: 'POST',
    url: '/collection/manage/temporaryStorage'
  },
  finishIdentify: {
    method: 'GET',
    url: '/collection/manage/finishIdentify'
  },
  withoutIdentify: {
    method: 'POST',
    url: '/collection/manage/withoutIdentify'
  },
  batchDjAuth: {
    method: 'GET',
    url: 'collection/identify/batchDjAuth'
  },
  supervisor: {
    method: 'GET',
    url: 'collection/manage/supervisor'
  },
  collectingDJList: {
    method: 'GET',
    url: '/collection/manage/djItems'
  },
  clickConfirmNum: {
    method: 'GET',
    url: '/collection/manage/clickConfirmNum'
  },
  ieSelect: {
    method: 'GET',
    url: '/collection/manage/identifyExpertDropBox'
  },
  itSelect: {
    method: 'GET',
    url: '/collection/manage/identifyTypeDropBox'
  },
  subItemStatusDropBox: {
    method: 'GET',
    url: '/collection/manage/subItemStatusDropBox'
  },
  subitemStat: {
    method: 'GET',
    url: '/collection/manage/subItemStat'
  },
  identifyRegister: {
    method: 'POST',
    url: '/collection/manage/identifyRegister'
  },
  addDjRecord: {
    method: 'POST',
    url: '/collection/manage/addDjRecord'
  }
}

export default api
